package findindexsubstring28

// 思路：
// 1. 如果 needle 为空，返回 0
// 2. 如果 needle 的长度大于 haystack 的长度，返回 -1
// 3. 遍历 haystack，检查从当前位置开始的子串是否等于 needle
// 4. 如果找到，返回当前位置
// 5. 如果没有找到，返回 -1
// 6. 时间复杂度 O(n*m)，空间复杂度 O(1)
// 7. 优化：使用 KMP 算法，时间复杂度 O(n+m)，空间复杂度 O(m)
func strStr(haystack string, needle string) int {
	if len(needle) == 0 {
		return 0
	}
	if len(needle) > len(haystack) {
		return -1
	}

	for i := 0; i <= len(haystack)-len(needle); i++ {
		if haystack[i:i+len(needle)] == needle {
			return i
		}
	}

	return -1
}
